import Vue from 'vue'

// 直接更新 state 的多个方法对象
// 先引入所有的 mutation-types
import {
    RECEIVE_GOODSLIST,
    RECEIVE_PRODUCTDATA,
    RECEIVE_PRODUCTCATEGORY,
    INCREMENT_FOOD_COUNT,
    DECREMENT_FOOD_COUNT,
    CLEAR_CART
}
    from './mutation-types'

export default {
    [RECEIVE_GOODSLIST](state, {
        goodsList
    }) {
        state.goodsList = goodsList;
    },

    [RECEIVE_PRODUCTDATA](state, {
        ProductData
    }) {
        state.ProductData = ProductData;
    },

    [RECEIVE_PRODUCTCATEGORY](state, {
        ProductCategory
    }) {
        state.ProductCategory = ProductCategory;
    },

    [INCREMENT_FOOD_COUNT](state, {
        food
    }) {
        if (!food.count) {
            // food.count = 1;// 新增的属性没有数据绑定，无法渲染到页面
            // 用 Vue.set() 可以给新增属性添加数据绑定（要引入 Vue） 
            // 需要传入的参数有：对象，属性名，属性值
            Vue.set(food, 'count', 1)
            state.cartFoods.push(food)
        } else {
            food.count++
        };
    },

    [DECREMENT_FOOD_COUNT](state, {
        food
    }) {
        if (food.count) {
            food.count--;
            if (food.count === 0) {
                // 当商品数量为0时，将 food 从 cartFoods 中移除
                state.cartFoods.splice(state.cartFoods.indexOf(food), 1)
            }
        };
    },

    [CLEAR_CART](state) {
        // 清除 food 中的 count
        state.cartFoods.forEach(food => food.count = 0)

        // 移除购物车中所有购物项
        state.cartFoods = [];
    },

    // setIsLogin(){
    //   isLogin=state.isLogin
    // },
    // 修改用户登录状态以及当前的用户id
    setIsLogin(state, userId) {
        state.isLogin = true;
        state.userId = userId;
    },
    // 修改当前地址信息
    setAddressInfoNow(state, addressInfoNow) {
        state.addressInfoNow = addressInfoNow;
    },

    // 修改当前店铺名称
    setAddressTitle(state, addressTitle) {
        state.addressTitle = addressTitle
    },
    // 修改当前店铺地址
    setAddressDetail(state, addressDetail) {
        state.addressDetail = addressDetail;
    },

    // 更新所有商品数据的函数
    setProduct(state, list) {
        state.ProductData = list;
    },

    // 更新商品详情id
    setOrderId(state, orderDetailId) {
        state.orderDetailId = orderDetailId;
    },

}